perm filename NETWHO.MID[NET,MRC]3 blob sn#333374 filedate 1978-02-06 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE NETWHO
C00004 00003	FIRE UP A CONNECTION
C00005 00004	SEND COMMAND
C00007 00005	FOOL AROUND WITH REPLIES
C00008 ENDMK
C⊗;
TITLE NETWHO

; QUICK NETWORK WHO KLUDGE UNTIL I DO THE RIGHT THING

NIORTS==-1 ? ERRHAN==-1 ? HSTTAB==-1		; MARVELOUS NETWORK ROUTINES
.INSRT NETWRK[NET,MRC]

CORBEG==.
PDL:	BLOCK 20.
USRBUF:	BLOCK 10.
HSTBUF:	BLOCK 10.
COREND==.-1

SUBTTL INITIALIZATION AND COMMAND PARSING

NETWHO:	JFCL
	RESET
	MOVE 17,[PDL(-20)]
	SETZM CORBEG
	MOVE [CORBEG,,CORBEG+1]
	BLT COREND
	RESCAN
CMDSCN:	INCHRS
	 JRST GETCMD
	CAIE ↑J
	 CAIN 175
	  JRST GETCMD
	CAIE ";
	 JRST CMDSCN
	CAIA
GETCMD:	 OUTSTR [ASCIZ/(User@)Host: /]

; GET USER NAME

	MOVE 1,[440700,,USRBUF]
GETUSR:	INCHWL
	CAIE <" >
	 CAIN ↑M
	  JRST GETUSR
	CAIE 175
	 CAIN ↑J
	  JRST [SKIPN USRBUF
		 JRST GETCMD
		MOVE [USRBUF,,HSTBUF]
		BLT HSTBUF+9.
		SETZM USRBUF
		JRST GOGOGO]
	CAIE "%				; CRETIN SAIL CONVENTION
	 CAIN "@
	  JRST GETHST
	IDPB 1
	JRST GETUSR

; GET HOST NAME

GETHST:	MOVE 1,[440700,,HSTBUF]
GETHCH:	INCHWL
	CAIE <" >
	 CAIN ↑M
	  JRST GETHCH
	CAIE 175
	 CAIN ↑J
	  JRST GOGOGO
	IDPB 1
	JRST GETHCH
SUBTTL FIRE UP A CONNECTION

GOGOGO:	PUSHJ 17,MAPHST
	MOVEI HSTBUF
	PUSHJ 17,HSTNAM
	 JRST [	OUTSTR [ASCIZ/No such host.
/]
		CLRBFI
		PUSHJ 17,UNMHST
		JRST NETWHO]
	 JRST [	OUTSTR [ASCIZ/Ambiguous host name.
/]
		CLRBFI
		PUSHJ 17,UNMHST
		JRST NETWHO]
	MOVEM HOST
	PUSHJ 17,UNMHST
	MOVEI 365
	MOVEM ICPSKT
	PUSHJ 17,CONECT
; FALLS THROUGH
SUBTTL SEND COMMAND

	IRPC GARPLY,,[ERSTR]
	 MOVEI "GARPLY
	 PUSHJ 17,NETOCH
	TERMIN
	MOVEI ↑M ? PUSHJ 17,NETOCH
	MOVEI ↑J ? PUSHJ 17,NETOCH
	PUSHJ 17,NETSND			; FORCE COMMAND OUT
YUMMIE:	PUSHJ 17,NETICW
	CAIE "@
	 JRST YUMMIE
	SKIPN USRBUF			; EVERYBODY?
	 JRST [	IRPC GARPLY,,[SSINF]
		 MOVEI "GARPLY
		 PUSHJ 17,NETOCH
		TERMIN
		JRST SNTUSR]
	IRPC GARPLY,,[USINF ]
	 MOVEI "GARPLY
	 PUSHJ 17,NETOCH
	TERMIN
	MOVE 1,[440700,,USRBUF]
SNDUSR:	ILDB 1
	JUMPE SNTUSR
	PUSHJ 17,NETOCH
	JRST SNDUSR
SNTUSR:	MOVEI ↑M ? PUSHJ 17,NETOCH
	MOVEI ↑J ? PUSHJ 17,NETOCH
	PUSHJ 17,NETSND			; FORCE COMMAND OUT
; FALLS THROUGH
SUBTTL FOOL AROUND WITH REPLIES

	PUSHJ 17,NETICW
	CAIN "+
	 JRST MSGLUP
	CAIE "-
	 JRST 4,.-1
GOBLIN:	PUSHJ 17,NETICW
	CAIE <" >
	 JRST GOBLIN
GOBBLE:	PUSHJ 17,NETICW
	CAIN "@
	 EXIT
	OUTCHR
	JRST GOBBLE
MSGLUP:	PUSHJ 17,NETICW
	CAIN "+
	 EXIT
	OUTCHR
	JRST MSGLUP

END NETWHO